// 用于图表名称的埋点传参，如有修改，记得同步到埋点文档
const chartTrackType = new Set([
	'average-response-time', // 平均响应时间
	'average-service-time', // 平均服务用时
	'average-maintenance-time', // 平均维修用时
	'timely-closing-rate', // 及时关单率
	'service-human-efficiency', // 服务人效
	'repeated-maintenance-rate', // 重复维修率
	'task-statistics', // 部门工单统计
	'personnel-map', // 人员地图
	'personnel-statistics', // 人员工单统计
	'personnel-event', // 人员事件统计
	'personnel-effectiveness', // 人员效率统计
	'personnel-workload', // 人员工作量统计
	'profit-event', // 人员营收统计
	'personnel-satisfaction', // 人员满意度统计
	'task-return-visit', // 工单回访率
	'task-customer-satisfaction', // 工单客户满意度
	'task-trend', // 工单趋势统计
	'task-class', // 工单分类统计
	'task_success', // 工单完成时效统计
	'task_failure', // 未完成工单时效统计
	'task-calendar', // 工单日历
	'task-map', // 工单地图
	'task-exception-node', // 工单异常节点统计
	'task-abnormal-reason', // 工单异常原因统计
	'event_type', // 事件类型统计
	'undone_event', // 未完成事件统计
	'incoming-call', // 客户呼入信息统计
	'exhale', // 坐席呼出信息统计
	'phone-trend', // 电话趋势统计
	'agent-work', // 坐席工作统计
	'spare-parts-satisfy', // 备件满足率
	'product_task', // 产品工单统计
	'product_info', // 产品信息统计
	'spare-parts-statistics', // 备件仓库统计
	'spare-parts-use', // 备件使用统计
	'service-item-information', // 服务项目信息统计
	'revenue-expenditure-analysis', // 收支结构分析
	'spare-part-sale', // 备件营收分析
	'revenue-status', // 营收状态统计
	'revenue-trend', // 营收走势统计
	'client-satisfaction', // 客户满意度统计
	'client-statistics', // 客户信息统计
	'client-map', // 客户地图
	'qrcode-behavior' // 超级二维码行为分析
])

// 报表名称参数处理
function getChartTrackType(chartType: string) {
	if(!chartTrackType.has(chartType)) return ''
	return chartType.toLocaleUpperCase().replaceAll('-', '_')
}

// 报表快捷埋点（需要报表名称传参的时候）
export function chartTrack(chartType: string, trackId: string, trackFn:any) {
	const trackData = getChartTrackType(chartType)
	// formatParams必须要用传入的，因为iframe子页面有单独定义~
	trackData && trackFn.clickStat(trackFn.formatParams(trackId, trackData));
}

interface exportTrackData {
	chartsName1: string,
	chartsName2: string,
	tabName: string
}

// 报表导出及导出全部埋点
export function chartExportTrack(isExportAll: boolean, trackFn: any, { menu1, menu2, tab } : {
	menu1: string,
	menu2: string,
	tab: string
}) {
	if (!menu1 || !menu2) return
	const chartsName2 = getChartTrackType(menu2)
	const trackData: exportTrackData = {
		chartsName1: menu1,
		chartsName2,
		tabName: tab
	}
	const trackId = isExportAll ? 'EXPORT_ALL' : 'EXPORT'
	// formatParams必须要用传入的，因为iframe子页面有单独定义~
	trackFn.clickStat(trackFn.formatParams(trackId, trackData, 'REPORT_' + trackId));
}